//package cn.mesmile.activity.listener;
//
//import cn.mesmile.activity.util.CustomSpringUtils;
//import lombok.extern.slf4j.Slf4j;
//import org.activiti.engine.TaskService;
//import org.activiti.engine.delegate.event.ActivitiEvent;
//import org.activiti.engine.delegate.event.ActivitiEventListener;
//import org.activiti.engine.delegate.event.impl.ActivitiEntityEventImpl;
//import org.activiti.engine.impl.persistence.entity.TaskEntity;
//import org.springframework.stereotype.Component;
//
//import java.io.Serializable;
//import java.util.HashMap;
//import java.util.Map;
//
///**
// * @author zb
// * @date 2021/12/23 11:50
// * @Description
// */
//@Slf4j
//@Component
//public class CustomActivityEventListener implements ActivitiEventListener, Serializable {
//
//    /**
//     * activity全局事件接收器
//     * @param event
//     */
//    @Override
//    public void onEvent(ActivitiEvent event) {
//        // 查看事件执行顺序
////        System.out.println("event.getType() = " + event.getType());
//        switch (event.getType()) {
//            //流程开始
//            case PROCESS_STARTED:
////                proStart(event);
//                break;
//            //流程结束
//            case PROCESS_COMPLETED:
////                proOver(event);
//                break;
//            //任务开始
//            case TASK_CREATED:
//                taskCreate(event);
//                break;
//            //任务完成
//            case TASK_COMPLETED:
////                taskOver(event);
//                break;
//            //流程结束
//            case PROCESS_CANCELLED:
////                proOver(event);
//            default:
//        }
//
//    }
//
//    /**
//     * 每个任务创建之前会执行到这里
//     * @param event
//     */
//    private void taskCreate(ActivitiEvent event) {
//
//        if (event instanceof ActivitiEntityEventImpl) {
//            // 5011
//            String processInstanceId = event.getProcessInstanceId();
//
//            ActivitiEntityEventImpl eventImpl = (ActivitiEntityEventImpl) event;
//
//            TaskEntity entity = (TaskEntity)eventImpl.getEntity();
//            String assignee = entity.getAssignee();
//            String taskDefinitionKey = entity.getTaskDefinitionKey();
//            // 5019
//            String taskId = entity.getId();
//
//            // >>>>>>>> id:2509, taskDefinitionKey:handleRequest , assignee:null
//            log.info(">>>>>>>> taskId:{}, taskDefinitionKey:{} , assignee:{}",taskId, taskDefinitionKey, assignee);
//            log.info(">>>>>>>> 任务创建，判断一下，如果是 起草人 节点就自动完成");
//
//            // 这里的 TaskService 不能够自动注入
//            TaskService taskService = CustomSpringUtils.getBean(TaskService.class);
//
//            // 动态设置审批人
//            taskService.setAssignee(taskId, "userId");
//
//            // 动态跳过第一个节点  【handleRequest 为流程图第一个节点的id】
//            if ("handleRequest".equals(taskDefinitionKey)){
//                Map<String, Object> taskVariables = new HashMap<String, Object>();
//                taskService.complete(taskId, taskVariables);
//            }
//
//        }
//    }
//
//    /**
//     * 监听异常处理策略
//     * @return
//     */
//    @Override
//    public boolean isFailOnException() {
//        return false;
//    }
//}
